이것은 인터랙티브 노트북입니다. 로컬에서 실행하거나 아래 링크를 사용할 수 있습니다:
Service API를 사용하여 트레이스 로깅 및 쿼리하기
다음 가이드에서는 Weave Service API를 사용하여 트레이스를 로깅하는 방법을 배우게 됩니다. 구체적으로, Service API를 사용하여 다음을 수행합니다:- 간단한 LLM 호출 및 응답의 모의 데이터를 만들고 Weave에 로깅합니다.
- 더 복잡한 LLM 호출 및 응답의 모의 데이터를 만들고 Weave에 로깅합니다.
- 로깅된 트레이스에 대한 샘플 조회 쿼리를 실행합니다.
로깅된 트레이스 보기
이 가이드에서 코드를 실행할 때 생성된 모든 Weave 트레이스는 Traces 탭에서 Weave 프로젝트(team_id\project_id
로 지정됨)로 이동하여 트레이스 이름을 선택하면 볼 수 있습니다.
시작하기 전에 사전 요구사항
Prerequisites: Set variables and endpoints
다음 코드는 Service API에 접근하는 데 사용될 URL 엔드포인트를 설정합니다:https://trace.wandb.ai/call/start
https://trace.wandb.ai/call/end
https://trace.wandb.ai/calls/stream_query
project_id
: 트레이스를 로깅할 W&B 프로젝트의 이름입니다.team_id
: W&B 팀 이름입니다.wandb_token
: 귀하의 W&B 인증 토큰입니다.
간단한 트레이스
다음 섹션에서는 간단한 트레이스를 만드는 과정을 안내합니다.간단한 트레이스 시작하기
다음 코드는 샘플 LLM 호출을 생성하고payload_start
엔드포인트를 사용하여 Weave에 로깅합니다. url_start
객체는 OpenAI의 payload_start
호출을 모방하며 쿼리는 gpt-4o
입니다Why is the sky blue?
.
성공하면 이 코드는 트레이스가 시작되었음을 나타내는 메시지를 출력합니다:
간단한 트레이스 종료하기
간단한 트레이스를 완료하기 위해 다음 코드는 샘플 LLM 호출 응답을 생성하고payload_end
엔드포인트를 사용하여 Weave에 로깅합니다. url_end
객체는 OpenAI의 payload_end
응답을 모방하며 쿼리는 gpt-4o
입니다Why is the sky blue?
. 이 객체는 가격 요약 정보와 채팅 완성이 Weave 대시보드의 트레이스 뷰에서 생성되도록 포맷되어 있습니다.
성공하면 이 코드는 트레이스가 완료되었음을 나타내는 메시지를 출력합니다:
복잡한 트레이스
다음 섹션에서는 다중 작업 RAG 조회와 유사한 하위 스팬이 있는 더 복잡한 트레이스를 만드는 과정을 안내합니다.복잡한 트레이스 시작하기
다음 코드는 여러 스팬이 있는 더 복잡한 트레이스를 만드는 방법을 보여줍니다. 이의 예로는 검색 증강 생성(RAG) 조회 후 LLM 호출이 있습니다. 첫 번째 부분은 전체 작업을 나타내는 부모 트레이스(payload_parent_start
)를 초기화합니다. 이 경우 작업은 사용자 쿼리 Can you summarize the key points of this document?
를 처리하는 것입니다.
payload_parent_start
객체는 다단계 워크플로우의 초기 단계를 모방하여 url_start
엔드포인트를 사용하여 Weave에 작업을 로깅합니다.
성공하면 이 코드는 부모 호출이 로깅되었음을 나타내는 메시지를 출력합니다:
복잡한 트레이스에 하위 스팬 추가: RAG 문서 조회
다음 코드는 이전 단계에서 시작된 부모 트레이스에 하위 스팬을 추가하는 방법을 보여줍니다. 이 단계는 전체 워크플로우에서 RAG 문서 조회 하위 작업을 모델링합니다. 하위 트레이스는 다음을 포함하는payload_child_start
객체로 시작됩니다:
-
trace_id
: 이 하위 스팬을 부모 트레이스에 연결합니다. -
parent_id
: 하위 스팬을 부모 작업과 연결합니다. -
inputs
: 검색 쿼리를 로깅합니다(예:"This is a search query of the documents I'm looking for."
url_start
엔드포인트에 성공적으로 호출하면 코드는 하위 호출이 시작되고 완료되었음을 나타내는 메시지를 출력합니다:
복잡한 트레이스에 하위 스팬 추가: LLM 완성 호출
다음 코드는 부모 트레이스에 또 다른 하위 스팬을 추가하는 방법을 보여주며, 이는 LLM 완성 호출을 나타냅니다. 이 단계는 이전 RAG 작업에서 검색된 문서 컨텍스트를 기반으로 AI의 응답 생성을 모델링합니다. LLM 완성 트레이스는 다음을 포함하는payload_child_start
객체로 시작됩니다:
trace_id
: 이 하위 스팬을 부모 트레이스에 연결합니다.parent_id
: 하위 스팬을 전체 워크플로우와 연결합니다.inputs
: 사용자 쿼리와 추가된 문서 컨텍스트를 포함하여 LLM의 입력 메시지를 로깅합니다.model
: 작업에 사용된 모델을 지정합니다(gpt-4o
).
payload_child_end
객체는 output
필드에 LLM이 생성한 응답을 로깅하여 트레이스를 종료합니다. 사용량 요약 정보도 로깅됩니다.
성공하면 코드는 LLM 하위 스팬 트레이스가 시작되고 종료되었음을 나타내는 메시지를 출력합니다:
복잡한 트레이스 종료하기
다음 코드는 부모 트레이스를 마무리하여 전체 워크플로우의 완료를 표시하는 방법을 보여줍니다. 이 단계는 모든 하위 스팬(예: RAG 조회 및 LLM 완성)의 결과를 집계하고 최종 출력 및 메타데이터를 로깅합니다. 트레이스는 다음을 포함하는payload_parent_end
객체를 사용하여 마무리됩니다:
id
: 초기 부모 트레이스 시작의parent_call_id
입니다.output
: 전체 워크플로우의 최종 출력을 나타냅니다.summary
: 전체 워크플로우에 대한 사용 데이터를 통합합니다.prompt_tokens
: 모든 프롬프트에 사용된 총 토큰 수입니다.completion_tokens
: 모든 응답에서 생성된 총 토큰 수입니다.total_tokens
: 워크플로우의 결합된 토큰 수입니다.requests
: 수행된 총 요청 수입니다(이 경우1
).
조회 쿼리 실행하기
다음 코드는 이전 예제에서 생성된 트레이스를 쿼리하는 방법을 보여주며,inputs.model
필드가 gpt-4o
와 같은 트레이스만 필터링합니다.
query_payload
객체에는 다음이 포함됩니다:
project_id
: 쿼리할 팀과 프로젝트를 식별합니다.filter
: 쿼리가 trace roots(최상위 트레이스)만 반환하도록 합니다.query
:$expr
operator:$getField
:inputs.model
필드를 검색합니다.$literal
:inputs.model
이"gpt-4o"
와 같은 트레이스를 일치시킵니다.
limit
: 쿼리를 10,000개 결과로 제한합니다.offset
: 첫 번째 결과부터 쿼리를 시작합니다.sort_by
: 결과를started_at
타임스탬프를 기준으로 내림차순으로 정렬합니다.include_feedback
: 결과에서 피드백 데이터를 제외합니다.